package 牛客算法篇;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-02-29
 * Time:19:57
 */

/**
 *
 牛客算法篇:BM21 旋转数组的最小数字
 描述
 有一个长度为 n 的非降序数组，比如[1,2,3,4,5]，将它进行旋转，即把一个数组最开始的若干个元素搬到数组的末尾，变成一个旋转数组，比如变成了[3,4,5,1,2]，或者[4,5,1,2,3]这样的。请问，给定这样一个旋转数组，求数组中的最小值。
 数据范围：1≤n≤100001≤n≤10000，数组中任意元素的值: 0≤val≤100000≤val≤10000
 要求：空间复杂度：O(1)O(1) ，时间复杂度：O(logn)O(logn)
 示例1
 输入：
 [3,4,5,1,2]
 返回值：
 1
 */
public class minNumberInRotateArray {
    public int minNumberInRotateArray (int[] nums) {
        // write code here
        int i=0,j=nums.length-1;
        int mid=0;


        while(i<j){
            mid=(i+j)/2;
            if(nums[mid]>nums[j]){

                i=mid+1;
            }else if(nums[mid]<nums[j]){
                j=mid;

            }else{
                j--;
            }
        }
        return nums[i];
    }
}
